<!DOCTYPE html>
<script src="../../../resources/js-test.js"></script>
<style>
.a1 .a2:-webkit-any(.a3, .a4) { background-color: green }
.b1 .b2:not(.b3) { background-color: green }
.c1 .c2:-webkit-any(:not(.c3)) { background-color: green }
.d1:not(.d2) .d3 { background-color: green; }
.e1 :not(.e2) { background-color: green; }
</style>
<div class="a1">
    <div class="a2" id="t1">Background should be green</div>
</div>
<div class="b1">
    <div class="b2 b3" id="t2">Background should be green</div>
</div>
<div class="c1">
    <div class="c2 c3" id="t3">Background should be green</div>
</div>
<div id="outer-d" class="d1 d2">
    <div id="t4" class="d3">Background should be green</div>
</div>
<div id="outer-e">
    <div id="t5">Background should be green</div>
</div>
<script>
description("Change classes affecting :-webkit-any and :not.")

document.body.offsetTop; // force style recalc.

var transparent = 'rgba(0, 0, 0, 0)';
var green = 'rgb(0, 128, 0)';

var t1 = document.getElementById("t1");
shouldBe("getComputedStyle(t1, null).backgroundColor", "transparent");
t1.className = "a2 a3";
shouldBe("getComputedStyle(t1, null).backgroundColor", "green");

var t2 = document.getElementById("t2");
shouldBe("getComputedStyle(t2, null).backgroundColor", "transparent");
t2.className = "b2";
shouldBe("getComputedStyle(t2, null).backgroundColor", "green");

var t3 = document.getElementById("t3");
shouldBe("getComputedStyle(t3, null).backgroundColor", "transparent");
t3.className = "c2";
shouldBe("getComputedStyle(t3, null).backgroundColor", "green");

var t4 = document.getElementById("t4");
shouldBe("getComputedStyle(t4, null).backgroundColor", "transparent");
document.getElementById("outer-d").className = "d1";
shouldBe("getComputedStyle(t4, null).backgroundColor", "green");

var t5 = document.getElementById("t5");
shouldBe("getComputedStyle(t5, null).backgroundColor", "transparent");
document.getElementById("outer-e").className = "e1";
shouldBe("getComputedStyle(t5, null).backgroundColor", "green");
</script>
